1. The Field of the Invention
This invention relates to systems, methods, and computer program products for managing application data that is used in both offline and online connection environments.
2. Background and Relevant Art
As computerized systems have increased in popularity, so also have the needs to distribute files and processing resources of computer systems in networks both large and small. In general, computer systems and related devices communicate information over a network for a variety of reasons, whether, for example, to simply exchange personal electronic messages, to sell merchandise, provide account information, and so forth. One will appreciate, however, that as computer systems and their related applications have become increasingly more sophisticated, the challenges associated with sharing data and resources on a network have also increased.
In general, computer systems often share data using applications at corresponding sending and receiving (or target) computer systems that send and receive the data. To communicate the data, the application at the sending computer system may generate data, such as by receiving input from a user or other module, or as a result of processing some other request. The application at the sending computer system then sends the data to the other target computer system on the network, often by sending the data through a transmission control protocol (“TCP”) oriented connection with the other computer. Assuming that the receiving (or target) computer system has a valid connection with the sending computer system, the receiving computer system receives the data, unpacks the data, and processes the data as needed. The data can include a request to which the receiving (or target) computer system is asked to reply in a separate operation.
Not all applications, however, are necessarily configured for connection oriented communication with other applications or other modules at other computer systems. Furthermore, some applications are configured for connection oriented communication over any number of communication protocols. Still further, some applications are configured for “online” and “offline” operations, regardless of the connection or non-connection oriented protocol. By way of explanation, the term “online” will refer to situations in which an application at a sending computer system has a valid (or appropriate) connection to a target service application at a target computer system.
By contrast, “offline” will refer to the situation in which the application at the sending computer system does not have a valid (or appropriate) connection with the target service at the target computer system. For example, a connection may not be possible at the moment between computer systems, or the connection may be sufficiently weak that it is effectively offline for the purposes of the type or size of data that needs to be communicated. Thus, the sending computer system may be connected on a network generally, and may still be online or offline with respect to the target application or target computer system. For example, a personal computer on a corporate network may be connected to the web server, but if the email server is down or unable to handle requests, the personal computer may be connected on the network, but “offline” with respect to the email server.
Client applications that can operate in both offline and online scenarios can be fairly complicated to develop since they can require the implementation of a complex set of logic for determining when a target application is online or offline (or effectively offline) with respect to the client application, and how to behave in the relevant situation. In particular, applications that are configured to work in both offline and online scenarios typically implement modules that take the application down two or more decision trees. For example, at some point, a module in the application has to make a determination if the target application service is available, or if the target application service is effectively unavailable. If the target application service is available, the application allows the user to use certain application functionality, and if the target application service is unavailable, the application makes other functionality available to the user. For example, the application may store the generated data, and continually try to send the message and get a response. Generally, these two lines of functionality will require at least some guidance from the user.
Unfortunately, this is inefficient for a number of reasons. For example, the application may indicate it is online with the target application or computer system, but the connection may be of such high latency that the packets will not get to the target application as quickly as needed. This sort of latency information is not normally provided to the user. Furthermore, offline/online-capable applications are typically configured with code (which also usually differs from one application to another) that becomes increasingly more complex when the connection type can be characterized at less than fully connected, but not fully disconnected. These issues can create a number of difficulties, particularly when the code for dealing with these situations is left primarily to the respective application developers, such that the code is not only complex, but different for each respective application.
Accordingly, an advantage in the art can be realized with systems, methods, and computer program products that provide applications with the ability work in both offline and online environments with relative ease. In particular, an advantage can be realized with such that allow for a common platform that allows multiple applications to easily deal with offline/online decisions, and allows such without necessarily requiring a significant amount of guidance from the user.